dofile "lib/radical.lua"

function tile(s) 
  return const.path.gfx.."game/ka/"..s..".jpg"; 
end

function ct_tile(s) 
  return const.path.gfx.."game/city/"..s..".jpg"; 
end

function cm_tile(s) 
  return const.path.gfx.."game/common/"..s..".jpg"; 
end

function dxml(s)
  return const.path.dlg.."1-deadhour/tea/"..s..".xml";
end

main = engine.main {
   start        = chain_ {
                     episode_("1-tea")
                    ,musplayer_("tea_player")
                    ,walk_("start")
                  }
  ,finish       = gamefile_("2-eye/eye.lua")
}

tea = engine.state {
   _maketea     = false --Kate want to make tea for dad
  ,_talk        = false --Kate talked with dad
  ,_pot         = "default"  --Pot is at default place
  ,_cup         = "default"  --Cup is at default place
  ,_water       = false --Water is in pot
  ,_potdone     = false --Hot water is in pot
  ,_cupdone     = false --Hot water is in cup
  ,_teadone     = false --Tea is done
  ,_body        = false --Kate found dad's body
}

tea_player = musplayer.player {
   mus("anticipation"):inside("start")
  ,mus("dad"):inside("hall"):when("tea._teadone")
  ,mute():fade(3000,3000):inside("dream1")
  ,sfx("note"):inside("wakeup")
  ,sfx("softnote"):inside("bed_slide")
  ,sfx("switch"):inside("flare")
  ,sfx("sudden"):inside("hall3")
  ,mus("rush"):inside("cry1")
  ,mute():inside("finita1"):always()
  ,mus("satiate_strings"):inside("finita2")
  ,sfx("siren"):inside("finita9")
  ,mute():fade(4000, 4000):inside("finita13")
}

start = pause {
   time         = 2000
  ,next         = "hall"
}

hall = scene {
   tile         = { tile "dad2", 500, 100 }
  ,dsc          = "Вечер выдался на удивление спокойный и тихий. Катя и правда начинает верить, что у них постепенно все налаживается. В новой поликлинике им обязательно помогут."
  ,obj          = { "dad" }
  ,nav          = {
                     right = vw("На кухню", "kitchen"):cnd("tea._maketea", "Делать на кухне сейчас нечего.")
                    ,left = vw("В комнату Кати", "kateroom_hub")
                    ,down = vw("В прихожую", "coridor")
                  }
}

dad = staticitem {
   dsc          = "{Отец} стоит у окна."
  ,act          = walk_("dad_dlg")
}

dad_dlg = dialog {
   tile         = { tile "dad2", 500, 100 }
  ,dsc          = "Отец сильно устал. Доктор Тихонов выдал им сразу несколько направлений, и они почти весь день провели в поликлинике."
  ,dlg          = dxml "dad"
  ,talkend      = "hall"
}

kitchen = scene {
   tile         = tile "table"
  ,dsc          = "Кухня такая тесная, что Кате приходится протискиваться между газовой плитой и столом."
  ,obj          = { "washer", "pot", "plate", "cup", "tea" }
  ,nav          = {
                    down = vw("В гостиную", "hall")
                  }
}

washer = staticitem {
   dsc          = choose_ {
                     ["default"] = "В {раковине} лежит немытая посуда -- у Кати теперь даже не хватает времени на работу по дому."
                    ,["tea._pot=='washer'"] = "В {раковине} лежит немытая посуда и {pot|чайник}."
                  }
  ,act          = choose_ {
                     ["default"] = "Горячая вода в этом доме часто идет с перебоями, но сейчас, слава Богу, все в порядке."
                    ,["tea._pot=='washer'"] = 
                        choose_ {
                           ["default"] = chain_ { sound_("waterjar"), set_("tea._water"), "Катя налила воды в чайник." }
                          ,["tea._water"] = "В чайнике уже есть вода."
                        }
                  }
}

plate = staticitem {
   dsc          = choose_ {
                     ["default"] = "Старая газовая {плита}, наверное, старше самой Кати, и ее не мешало бы почистить."
                    ,["tea._pot=='plate'"] = "На {плите} стоит {pot|чайник}."
                  }
  ,act          = choose_ {
                     ["default"] = "Еще год назад муниципалитет обещал заменить все газовые плиты на электрические, однако они до сих пор пользуются газовой плитой."
                    ,["tea._pot=='plate' and tea._potdone"] = "Катя уже вскипятила воду."
                    ,["tea._pot=='plate' and not tea._potdone and not tea._water"] = "В чайнике нет воды."
                    ,["tea._pot=='plate' and not tea._potdone and tea._water"] = walk_("kettle1")
                  }
}

pot = item {
   nam          = choose_ {
                     ["default"] = "Чайник"
                    ,["tea._water"] = "Чайник с водой"
                  }
  ,dsc          = choose_ {
                    ["tea._pot=='default' or tea._pot==nil"] = "Рядом с раковиной стоит {чайник}."
                  }
  ,ico          = ico "pot"
  ,img          = ico "pot-use"
  ,tak          = chain_ { stop_sound, exec_("tea._pot=''"), "Катя взяла чайник." }
  ,use          = chooseuse_ {
                     ["default"] = "В этом нет никакого смысла."
                    ,["cup"] = 
                        choose_ {
                           ["default"] = "Чайник пуст."
                          ,["tea._cupdone"] = "В кружке уже налит кипяток."
                          ,["tea._water and not tea._potdone"] = "Надо бы сначала вскипятить воду."
                          ,["tea._water and tea._potdone"] = 
                              chain_ { 
                                sound_("watercup"), 
                                unset_("tea._water"), 
                                unset_("tea._potdone"), 
                                drop_("pot"), 
                                exec_("tea._pot=''"), 
                                set_("tea._cupdone"), 
                                "Катя налила в кружку кипяток и поставила чайник на плиту." 
                              }
                        }
                    ,["washer"] = 
                        chain_ { 
                          exec_("tea._pot='washer'"), 
                          drop_("pot"), 
                          put_("pot", "kitchen"), 
                          "Катя поставила чайник в раковину." 
                        }
                    ,["plate"] = 
                        chain_ { 
                          exec_("tea._pot='plate'"), 
                          drop_("pot"), 
                          put_("pot", "kitchen"), 
                          "Катя поставила чайник на плиту. Теперь надо включить конфорку." 
                        }
                  }
}

cup = item {
   nam          = choose_ {
                     ["default"] = "Кружка"
                    ,["tea._cupdone and not tea._teadone"] = "Кружка с кипятком"
                    ,["tea._teadone"] = "Кружка с чаем"
                  }
  ,dsc          = choose_ {
                    ["tea._cup=='default' or tea._cup==nil"] = "У плиты можно заметить несколько пустых банок из-под содовой и пара {кружек}."
                  }
  ,ico          = ico "cup"
  ,img          = ico "cup-use"
  ,tak          = chain_ { exec_("tea._cup=''"), "Катя взяла кружку." }
  ,use          = chooseuse_ {
                     ["default"] = "В этом нет никакого смысла."
                    ,["washer"] = "Воду надо сначала вскипятить в чайнике."
                    ,["plate"] = "Вряд ли стоит ставить на плиту кружку."
                    ,["dad"] = 
                        choose_ {
                           ["default"] = "Чай еще не приготовлен."
                          ,["tea._teadone"] = chain_ { unlock_("1-tea"), drop_("cup"), walk_("dad_dlg") }
                        }
                  }
}

tea = item {
   nam          = "Пакетик с чаем"
  ,dsc          = "Однако коробки с чаем нигде не видно. Катя вспоминает, что могла положить ее в {настенный шкафчик}."
  ,ico          = ico "tea"
  ,img          = ico "tea-use"
  ,tak          = [[Этот шкаф обладает каким-то удивительным свойством -- о вещах, которые в него попадают, постоянно забываешь. Как-то Катя нашла здесь коробку 
                    с крупой, купленную больше десяти лет назад. Но по крайней мере о лечебном чае Катя все-таки вспомнила. Коробка с чаем и правда оказалась в 
                    шкафу. Катя достала из нее один пакетик.]]
  ,use          = chooseuse_ {
                     ["default"] = "В этом нет никакого смысла."
                    ,["washer"] = "Лучше не мочить чай."
                    ,["pot"] = "Чай в пакетике, поэтому лучше сначала вскипятить воду и заварить чай уже в кружке."
                    ,["cup"] = 
                        choose_ {
                           ["default"] = "Лучше сначала налить в кружку кипяток."
                          ,["tea._cupdone"] = chain_ { sound_("teapot"), drop_("tea"), set_("tea._teadone"), "Катя положила пакетик с чаем в кружку. Напиток готов." }
                        }
                  }
}

kettle1 = pause {
   time         = 1000
  ,fading       = 50
  ,next         = "kettle2"
}

kettle2 = pause {
   time         = 5000
  ,enter        = chain_ { set_("tea._potdone"), sound_("kettle") }
  ,next         = "kettle3"
}

kettle3 = engine.hub {
  enter        = chain_ { exec_("kitchen.tmpdsc='Вода в чайнике вскипела.'"), walk_("kitchen") }
}

coridor = scene {
   tile         = { cm_tile "coridor", 500, 20 }
  ,bounds       = { nil, 50, 500 }
  ,dsc          = ""
  ,obj          = { "coridor_bag" }
  ,nav          = {
                     up = vw("Выйти из квартиры"):cnd("false", "Кате совсем не хочется куда-то идти.")
                    ,left = vw("В туалет", "toilet")
                    ,down = vw("В гостиную", "hall")
                  }
}

coridor_bag = staticitem {
   dsc          = "На тумбочке у стены лежит целлофановый {пакет} с логотипом поликлиники."
  ,act          = "Тихонов выписал отцу новое обезболивающее, которое у них купили там же, в аптеке."
  ,showonce     = true
}

toilet = scene {
   tile         = cm_tile "toilet"
  ,bounds       = { 50, nil, 750 }
  ,dsc          = "Здесь нет ничего интересного."
  ,alwaysdsc    = true
  ,nav          = {
                    down = vw("Выйти", "coridor")
                  }
}

kateroom_hub = engine.hub {
  enter         = choose_ {
                     ["default"] = walk_("kateroom1")
                    ,["tea._talk"] = walk_("kateroom2")
                  }
}

kateroom1 = scene {
   tile         =  tile "bed"
  ,dsc          = [[Хотя еще довольно рано, Кате страшно хочется спать. Но надо бы сначала поговорить с отцом. Он только что принял новые таблетки, 
                    а по вечерам ему часто становится плохо.]]
  ,alwaysdsc    = true
  ,nav          = {
                    down = vw("Выйти из комнаты", "hall")
                  }
}

kateroom2 = scene {
   tile         =  tile "bed"
  ,dsc          = [[Еще только начало восьмого, но у Кати возникает такое чувство, будто бы уже глубокая ночь.^^]]
  ,obj          = { "phone" }
  ,ontimer      = function(s,x,y)
                    if s.fno == nil then
                      s.fno = 0;
                    end
                    s.fno = s.fno + 1;
                    if s.fno == 1 or math.mod(s.fno, 80) == 0 then
                      play_sound("phone");
                    end
                  end
  ,nav          = {
                    down = vw("Выйти из комнаты", "hall")
                  }
}

phone = staticitem {
   dsc          = "Звонит {телефон}."
  ,act          = walk_("phone_dlg")
}

phone_dlg = dialog {
   bounds       = { 180, 240, 650 }
  ,dlg          = dxml "phone"
}

sleep = pause {
   time         = 3000
  ,fading       = 60
  ,next         = "wakeup"
}

wakeup = cutscene {
   tile         = { tile "clock", 20, 40 }
  ,bounds       = { nil, 540, 900 }
  ,dsc          = [[Катя и не заметила, как провалилась в сон. Когда она проснулась, уже стояла глубокая ночь. Однако что-то было не в порядке. 
                    Настенные часы в комнате неизменно показывали без двадцати час, и казалось, что время остановилось.]]
  ,next         = "bed_slide"
}

bed_slide = slideup {
   fps          = 20
  ,x            = 0
  ,y            = 360
  ,step         = 2
  ,tile         = tile "bed"
  ,next         = "kateroom3"
}

kateroom3 = scene {
   tile         =  tile "bed"
  ,dsc          = [[Кате как-то не по себе. Как будто что-то давит ей на грудь так сильно, что даже сложно вздохнуть.]]
  ,alwaysdsc    = true
  ,nav          = {
                    down = vw("Выйти из комнаты", "hall2")
                  }
}

hall2 = scene {
   obj          = { "hall2_switch" }
}

hall2_switch = staticitem {
   dsc          = "Стоит глубокая ночь. В гостиной так темно, что Катя даже не сразу может нащупать {включатель} света."
  ,act          = walk_("flare")
}

flare = pause {
   fading       = 0
  ,time         = 100
  ,tile         = { const.path.gfx.."white.jpg", 0, 0 }
  ,next         = "hall_pre"
}

hall_pre = pause {
   tile         = tile "body"
  ,time         = 500
  ,fading       = 60
  ,next         = "hall3"
}

hall3 = scene {
   tile         = tile "body"
  ,obj          = { "hall3_body" }
}

hall3_body = staticitem {
   dsc          = choose_ {
                     ["default"] = "{Отец} сидит прямо на полу, у стены, в какой-то странной неестественной позе."
                    ,["tea._body"] = "Боже! Кажется, он {не дышит}."
                  }
  ,act          = choose_ {
                     ["default"] = chain_ { set_("tea._body"), refresh }
                    ,["tea._body"] = walk_("cry1")
                  }
}

cry1 = pause {
   fading       = 0
  ,ondrawbg     = function(s,p)
                    drawing.draw_text(p, "ОТЕЦ!", 380, 260, "white", const.fontb, 64);
                    return p;
                  end
  ,time         = 700
  ,next         = "hall4"
}

hall4 = scene {
   tile         = tile "body"
  ,dsc          = "Отец лежит у стены. Он не дышит. Надо срочно позвонить в скорую."
  ,nav          = {
                     right = vw("На кухню"):cnd("false", "Нужно срочно позвонить в скорую!")
                    ,left = vw("В комнату Кати", "kateroom4")
                    ,down = vw("В прихожую"):cnd("false", "Нужно срочно позвонить в скорую!")
                  }
}

kateroom4 = scene {
   tile         =  tile "bed"
  ,obj          = { "kateroom4_phone" }
  ,nav          = {
                    down = vw("Выйти из комнаты", "hall4")
                  }
}

kateroom4_phone = staticitem {
   dsc          = "На столе стоит старый офисный {телефон}, который несколько лет назад принес с работы отец."
  ,act          = walk_("finita1")
}

finita1 = pause {
   fading       = 0
  ,time         = 2000
  ,next         = "finita2"
}

finita2 = pause {
   time         = 2000
  ,next         = "finita3"
}

finita3 = pause {
   time         = 6000
  ,ondrawbg     = function(s,p)
                    drawing.draw_text_center(p, "МУЗЫКА", const.picwidth, 260, "white", const.font, 18);
                    drawing.draw_text_center(p, "Kevin MacLeod", const.picwidth, 280, "white", const.fontb, 30);
                    return p;
                  end
  ,next         = "finita4"
}

finita4 = pause {
   time         = 6000
  ,ondrawbg     = function(s,p)
                    drawing.draw_text_center(p, "ДОПОЛНИТЕЛЬНАЯ МУЗЫКА", const.picwidth, 260, "white", const.font, 18);
                    drawing.draw_text_center(p, "Василий Воронков", const.picwidth, 280, "white", const.fontb, 30);
                    return p;
                  end
  ,next         = "finita5"
}

finita5 = slideup {
   fps          = 20
  ,x            = 0
  ,y            = 580
  ,step         = 2
  ,tile         = tile "kate"
  ,next         = "finita6"
}

finita6 = pause {
   time         = 6000
  ,tile         = tile "kate"
  ,ondrawbg     = function(s,p)
                    drawing.draw_text_center(p, "ЭМБИЕНТ", const.picwidth, 260, "white", const.font, 18);
                    drawing.draw_text_center(p, "Василий Воронков", const.picwidth, 280, "white", const.fontb, 30);
                    return p;
                  end
  ,next         = "finita7"
}

finita7 = pause {
   time         = 6000
  ,ondrawbg     = function(s,p)
                    drawing.draw_text_center(p, "В. А. Моцарт, Requiem, Laudate Dominium", const.picwidth, 260, "white", const.font, 18);
                    drawing.draw_text_center(p, "в исполнении Advent Chamber Orchestra", const.picwidth, 280, "white", const.fontb, 30);
                    return p;
                  end
  ,next         = "finita8"
}

finita8 = pause {
   time         = 6000
  ,fadinD       = 60
  ,ondrawbg     = function(s,p)
                    drawing.draw_text_center(p, "ЗВУКОВЫЕ ЭФФЕКТЫ", const.picwidth, 240, "white", const.font, 18);
                    drawing.draw_text_center(p, "freesound.org", const.picwidth, 260, "white", const.fontb, 30);
                    drawing.draw_text_center(p, "soundbible.com", const.picwidth, 290, "white", const.fontb, 30);
                    return p;
                  end
  ,next         = "finita9"
}

finita9 = slideright {
   x            = -536
  ,y            = 398
  ,endx         = 960
  ,tile         = tile "paramedic"
  ,fps          = 50
  ,step         = 8
  ,next         = "finita10"
}

finita10 = pause {
   time         = 6000
  ,ondrawbg     = function(s,p)
                    drawing.draw_text_center(p, "ОБРАБОТКА ГРАФИКИ И АНИМАЦИЯ", const.picwidth, 260, "white", const.font, 18);
                    drawing.draw_text_center(p, "Василий Воронков", const.picwidth, 280, "white", const.fontb, 30);
                    return p;
                  end
  ,next         = "finita11"
}

finita11 = pause {
   time         = 6000
  ,ondrawbg     = function(s,p)
                    drawing.draw_text_center(p, "ГРАФИКА", const.picwidth, 260, "white", const.font, 18);
                    drawing.draw_text_center(p, "flickr.com", const.picwidth, 280, "white", const.fontb, 30);
                    return p;
                  end
  ,next         = walkblack_("finita12")
}

finita12 = pause {
   time         = 6000
  ,fading       = 120
  ,tile         = { const.path.gfx.."title.jpg", 315, 250 }
  ,next         = "finita13"
}

finita13 = pause {
   fading       = 120
  ,time         = 2000
  ,next         = "main"
}
